SS A Screen Saver Utility For Windows 3.0 Version 1.5 March 12,1991 Copyright 1991 Tom Wheeler [72037,1742] The programs and documentation contained herein are hereby placed in the public domain. You may use any portion of this material as you see fit for your own personal use provided no part of anything contained herein is used or distributed commercially. This material may not be distributed unless all modules listed below are included in the final distributed version: LIBENTRY ASM 2481 11-02-90 9:21p README TXT 6585 03-12-91 6:22p SAVE BMP 8310 11-01-90 9:59p SS C 19998 03-12-91 4:09p SS DEF 397 03-12-91 9:06a SS DLG 1556 01-24-91 8:01p SS EXE 21088 03-12-91 5:04p SS H 1271 03-12-91 9:55a SS ICO 766 10-13-90 11:33a SS MAK 2229 03-12-91 5:03p SS RC 926 11-02-90 6:17p SSHOOK C 5887 03-12-91 9:55a SSHOOK DEF 377 03-12-91 10:21a SSHOOK DLL 2208 03-12-91 5:02p SSHOOK MAK 2149 03-12-91 5:02p SSHOOK RC 973 10-11-90 8:42p No claim of suitability of use is made for these programs. The user is solely responsible to determine whether or not these programs perform properly on any given computer system. The use of this program is quite simple. Execute the program "SS.EXE" by any means desired from within Windows 3.0. Make sure that the dynamic link library "SSHOOK.DLL" is available in the directory the program is being executed from or that it is placed in a directory that can be located with the "PATH" environment variable. The program initializes as an Icon and cannot be maximized. Click on the Icon to select its system menu and choose the "Time" menu option to set the Activation Time of the Screen Saver. The Activation Time is initialized to 10 minutes the first time the program is run. Enter the desired Activation Time and click "Save" to permanently save this value or "Cancel" to abort. This value will be recorded in your "Win.Ini" Windows initialization file and will be used every time that "SS" is run until changed again. "SS" detects keystrokes and mouse movements. If "SS" detects that no keys have been pressed or that the mouse has not moved within the period of time defined by the Activation Time, the screen will blank and a graphic icon will be randomly moved around the screen until either a key is pressed, the mouse is moved, or a mouse button is clicked. "SS" cannot detect keystrokes entered in a DOS application running under Windows so it is possible that the screen will be blanked if you are running a DOS application in a Window. Full screen DOS applications do not experience this problem. This program was written as an experiment to try out various Windows functions, primarily the use of the SetWindowsHook function, bitmap manipulation, and the creation of a DLL (dynamic link library). The make scripts were generated using the PWB (Programmers Work Bench) included with Microsoft C 6.0. The program was compiled and linked with Microsoft C 6.0 and Link 5.1. ========================= VERSION 1.4 ========================= As stated above, SS was primarially written as a programming exercise. Due to the suprising number of downloads, however, I have decided to create this release to fix some problems noted by many of you. Previous versions had problems capturing mouse input cleanly. It seems that this is quite a trickey problem under Windows. This version attempts to correct subtle problems encountered previously. Formerly, SS set an internal timer to determine when to sample mouse input. Upon expiration of the timer, it would start capturing mouse input for all of Windows to determine if the system was idle or not. Mouse capture would not be released until either some mouse or keyboard activity was detected, or when the screen was actually blanked. Although this was reliable for most purposes, it could cause windows, menus, scroll bars, buttons, etc. to momentarially loose some messages. This would result in strange behavior such as a menu or scrollbar "freezing", a double click to be missed, etc. This version takes a totally different (and I hope safe) approach to looking at mouse activity. The mouse timer now expires once a second. When this happens SS looks to see which window is currently active. The active window is then "sub-classed" (for non-programmers, this is a technique of capturing a windows messages). At this point, all messages can be filtered and mouse movement and mouse buttons can be sampled while the mouse is active within that window (which is usually most of the time). The only problem I am aware of with this release is its inability to detect keystrokes in a DOS application when running in 386 Enhanced Mode (if you are running in Real or Standard Modes it is meaningless to try to detect DOS keystrokes anyhow). If anyone out there knows of a technique to do this, I would greatly appreciate hearing from you. ========================= VERSION 1.5 ========================= This version takes yet another (and much safer) approach to hooking input messages. The module SSHOOK.C was modified to hook WM_GETMESSAGE instead of WM_KEYBOARD. By filtering the messages before they are passed along to their respecrive window procs, SS can safely monitor keyboard and mouse input system wide. This technique should finally clean up some of the more obscure problems encountered in previous releases. In addition, I have since come across some documentation from Microsoft trying (in vain) to explain problems with the WEP termination function in DLLs. It seems that this procedure does not reliably get called unless the DLL was initially loaded using the LoadLibrary() function call (which this program does not do). I therefore added a KillHook() function and explicitely call it from SS when terminating. This function now does what WEP previously did. ----------------end-of-author's-documentation--------------- Software Library Information: This disk copy provided as a service of Public (software) Library We are not the authors of this program, nor are we associated with the author in any way other than as a distributor of the program in accordance with the author's terms of distribution. Please direct shareware payments and specific questions about this program to the author of the program, whose name appears elsewhere in this documentation. If you have trouble getting in touch with the author, we will do whatever we can to help you with your questions. All programs have been tested and do run. To report problems, please use the form that is in the file PROBLEM.DOC on many of our disks or in other written for- mat with screen printouts, if possible. PsL cannot debug pro- programs over the telephone, though we can answer questions. Disks in the PsL are updated monthly, so if you did not get this disk directly from the PsL, you should be aware that the files in this set may no longer be the current versions. Also, if you got this disk from another vendor and are having prob- lems, be aware that some files may have become corrupted or lost by that vendor. Get a current, working disk from PsL. For a copy of the latest monthly software library newsletter and a list of the 3,000+ disks in the library, call or write Public (software) Library P.O.Box 35705 - F Houston, TX 77235-5705 Orders only: 1-800-2424-PSL MC/Visa/AmEx/Discover Outside of U.S. or in Texas or for general information, Call 1-713-524-6394 PsL also has an outstanding catalog for the Macintosh.